1. Technical Field
The present invention relates to conversational systems, and more specifically to a system and method to facilitate natural language generation in a human-to-machine conversational system that produces written or spoken output.
2. Discussion of the Related Art
Human beings communicate ideas with one another using a mechanism known as natural language. Natural language evolved as a medium of communication as human beings learned to communicate with one another. However, due to the inherent structure of natural language, it is an imperfect mechanism for conveying ideas. The human brain translates natural language into concepts and ideas, and allows communication between different individuals using natural language through a complicated translation process that no machine has been able to accurately duplicate.
A computer can generate written or spoken language output, but the structure of the language from a computer rarely resembles natural human language. Typically, prior art computer generated speech stores a limited number of sentences which can be expressed at predetermined times and in predetermined ways, which limits the expressiveness of computer-generated language.
For example, in a conversation with a conversational system, a user supplies the system with information in the form of a statement or a question. The system then responds to the user with a statement or a question. This exchange continues until the computer fulfills the user's request.
The information in a simple conversation can be represented with pairs of attributes and values. An attribute A and its corresponding value V are written in the form {A=V}. For example, the statement “a flight leaves at 3PM” in the domain or realm of air travel can be represented with the attribute-value pair {$timeDep=“3PM”}, where $timeDep is the attribute denoting the departure time, and “3PM” is the textual instantiation of the attribute.
The majority of current conversational systems perform natural language generation (NLG) with templates. Templates comprise attributes interspersed between words of natural language. When the system requires a phrase, it first chooses a template, and then replaces the attributes in the template with their corresponding values in the run-time environment. For example, the template “a flight leaves at $timeDep” would be expanded to “a flight leaves at 3 PM” if the run-time environment contained the attribute-value pair {$timeDep=“3 PM”}. Given a set of attribute-value pairs, a template provides a fixed way of rendering them into natural language. However, using such a natural language generation method with templates requires that a programmer write a different template for every new phrase to be created.
Accordingly, an accurate and dynamic technique for automatically and efficiently generating natural language is highly desirable.